﻿// X-factor Chains POJ - 3421 挑战编程.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>


using namespace std;

/*
https://vjudge.net/problem/POJ-3421#author=GPT_zh

给定一个正整数 X，长度为 m 的 X 因子链是一个整数序列，
1 = X0, X1, X2, …, Xm = X

满足
Xi < Xi+1 且 Xi | Xi+1，其中 a | b 表示 a 完全整除 b。

现在我们对 X 因子链的最大长度和该长度的链的数量感兴趣。

输入
输入包含多个测试用例。每个测试用例包含一个正整数 X (X ≤ 2^20)。

输出
对于每个测试用例，输出最大长度和该长度的 X 因子链的数量。

2
3
4
10
100

1 1
1 1
2 1
2 2
4 6
*/


vector<int> get_divisors(int x)
{
    vector<int> res;
    for (int i = 1; i <= x / i; i++)
        if (x % i == 0)
        {
            res.push_back(i);
            if (i != x / i) res.push_back(x / i);
        }
    sort(res.begin(), res.end());
    return res;
}
int dp[10000][2];
void solve(const vector<int>& v) {
    memset(dp, 0, sizeof dp);

    dp[0][0] = 0; dp[0][1] = 1;
    for (int i = 1; i < v.size(); i++) {
        int vala = v[i];
        for (int j = 0; j < i; j++) {
            int valb = v[j];
            if (vala % valb == 0 && dp[j][0] + 1 > dp[i][0]) {
                dp[i][0] = dp[j][0] + 1;
                dp[i][1] = dp[j][1];
            }
            else if (vala % valb == 0 && dp[j][0] + 1 == dp[i][0]) {
                dp[i][1] += dp[j][1];
            }
        }
    }

    cout << dp[v.size() - 1][0] << " " << dp[v.size() - 1][1] << endl;
    return;
}


int main()
{
    int n;
    while (cin >> n) {
        vector<int> v = get_divisors(n);
        solve(v);
    }


    return 0;
}

